package cn.xuguowen.user.designPatten.builder;

/**
 * ClassName: Client
 * Package: cn.xuguowen.user.designPatten.builder
 * Description: 测试建造者模式
 *
 * @Author 徐国文
 * @Create 2023/6/2 10:27
 * @Version 1.0
 */
public class Client {

    public static void main(String[] args) {
        SkuDO skuDO = new SkuDO();
        skuDO.setSkuId(1L);
        skuDO.setSkuName("油烟机");
        skuDO.setCouponId(2L);
        skuDO.setPromotionId(3L);
        skuDO.setExtMsg("额外信息");

        SkuVO skuVO = SkuBuilder.<SkuVO>create()
                .skuDo(skuDO)
                .skuDo(skuDO.getCouponId() != null)
                .skuDo(new SkuVOFunction() {
                    @Override
                    public SkuVO newInstance() {
                        return new SkuVO();
                    }
                })
                .skuDo(new SkuVOExtFunction() {
                    @Override
                    public void buildExtInfo(SkuVO skuVO, SkuDO skuDO) {
                        skuVO.setExtMsg(skuDO.getExtMsg());
                    }
                })
                .build();

        // SkuVO(skuId=1, skuName=油烟机, promotionTag=null, couponText=需要优惠券！, extMsg=额外信息)
        System.out.println(skuVO);
    }
}
